'use strict';

var crypto = require('crypto');
var ed = require('ed25519');
var BlockChain = require("../blockchain");
var Consensus = require("../consensus/dpos");


let blockchains = [];
for (var i = 0; i < 20; ++i) {

    var password = `I am tester ${i}!`;
    var hash = crypto.createHash('sha256').update(password).digest();
    var keypair = ed.MakeKeypair(hash);
    console.log(`node ${i} address: ${keypair.publicKey.toString('hex')}`);

    let blockchain = new BlockChain(Consensus, keypair, i);
    blockchain.start();
    blockchains.push(blockchain);
}

setTimeout(() => {
    for (var i = 0; i < blockchains.length; ++i) {
        console.log(`${i} --> ${blockchains[i].list_peers()}`);
    }
}, 3000);


setTimeout(() => {
    blockchains[19].sync();
}, 3000);


// async function get_balance() {
//     let amount = await blockchains[0].get_balance();
//     console.log(`node 0 balance: ${amount}`);
//     amount = await blockchains[6].get_balance();
//     console.log(`node 6 balance: ${amount}`);
// }

// setInterval(get_balance, 10000);
